package com.quick.android.app;

import android.content.Context;

import com.quick.android.utils.AppUtils;
import com.quick.android.utils.CheckUtils;
import com.quick.android.utils.FileUtils;

import java.io.File;

/**
 * App 配置信息
 *
 * @author quick
 */
public class AppConfig {
    /**
     * 是否处于调试模式
     */
    public static volatile boolean IS_DEBUG = true;
    /**
     * 默认图片加载线程数量
     */
    public static int DEFAULT_THREAD_COUNT = 5;
    /**
     * 图片缓存-内存缓存大小
     */
    public static int MEMORY_CACHE_SIZE = 8 * 1024 * 1024;
    /**
     * 图片缓存-硬盘缓存大小
     */
    public static int DISK_CACHE_SIZE = 50 * 1024 * 1024;

    private static final String CACHE_IMG_NAME = "images";
    private static final String CACHE_FILE_NAME = "files";
    private static final String CACHE_LOG_NAME = "logs";

    private static int mScreenWidth;
    private static int mScreenHeight;
    private static int mVersionCode;
    private static String mVersionName;
    private static String mDeviceId;
    private static String mCacheDir;
    private static String mCacheImgDir;
    private static String mCacheFileDir;
    private static String mCacheLogDir;

    /**
     * 清空缓存
     */
    public static void clearCache() {
        FileUtils.clearDir(mCacheImgDir);
        FileUtils.clearDir(mCacheFileDir);
        FileUtils.clearDir(mCacheLogDir);
    }

    /**
     * 获取当前设备的屏幕宽度
     */
    public static int getScreenWidth(Context context) {
        if (mScreenWidth <= 0) {
            mScreenWidth = AppUtils.getScreenWidth(context);
        }
        return mScreenWidth;
    }

    /**
     * 获取当前设备的屏幕高度
     */
    public static int getScreenHeight(Context context) {
        if (mScreenHeight <= 0) {
            mScreenHeight = AppUtils.getScreenHeight(context);
        }
        return mScreenHeight;
    }

    /**
     * 获取当前APP版本号
     */
    public static int getVersionCode(Context context) {
        if (mVersionCode <= 0) {
            mVersionCode = AppUtils.getVersionCode(context);
        }
        return mVersionCode;
    }

    /**
     * 获取当前APP版本名
     */
    public static String getVersionName(Context context) {
        if (CheckUtils.isStrEmpty(mVersionName)) {
            mVersionName = AppUtils.getVersionName(context);
        }
        return mVersionName;
    }

    /**
     * 获取设备的IMEI号
     */
    public static String getDeviceId(Context context) {
        if (CheckUtils.isStrEmpty(mDeviceId)) {
            mDeviceId = AppUtils.getSystemImei(context);
        }
        return mDeviceId;
    }

    /**
     * 创建缓存目录路径
     */
    public static String getCacheDir(Context context) {
        if (CheckUtils.isStrEmpty(mCacheDir)) {
            mCacheDir = context.getExternalCacheDir().getAbsolutePath();
        } else {
            FileUtils.makeDirs(mCacheDir);
        }
        return mCacheDir;
    }

    /**
     * 获取缓存图片目录路径
     */
    public static String getCacheImgDir(Context context) {
        if (CheckUtils.isStrEmpty(mCacheImgDir)) {
            if (CheckUtils.isStrEmpty(mCacheDir)) {
                mCacheDir = getCacheDir(context);
            }
            mCacheImgDir = mCacheDir + File.separator + CACHE_IMG_NAME;
        }
        FileUtils.makeDirs(mCacheImgDir);
        return mCacheImgDir;
    }

    /**
     * 获取缓存文件目录路径
     */
    public static String getCacheFileDir(Context context) {
        if (CheckUtils.isStrEmpty(mCacheFileDir)) {
            if (CheckUtils.isStrEmpty(mCacheDir)) {
                mCacheDir = getCacheDir(context);
            }
            mCacheFileDir = mCacheDir + File.separator + CACHE_FILE_NAME;
        }
        return mCacheFileDir;
    }

    /**
     * 获取缓存LOG文件目录路径
     */
    public static String getCacheLogDir(Context context) {
        if (CheckUtils.isStrEmpty(mCacheLogDir)) {
            if (CheckUtils.isStrEmpty(mCacheDir)) {
                mCacheDir = getCacheDir(context);
            }
            mCacheLogDir = mCacheDir + File.separator + CACHE_LOG_NAME;
        }

        return mCacheLogDir;
    }

}
